Cấu trúc của kỳ thi Olympic Tin học Quốc tế

Vào mỗi ngày thi, học sinh thường phải giải quyết ba bài toán trong vòng năm giờ. Mỗi học sinh làm việc một mình trên máy vi tính và không được phép nhận sự trợ giúp nào khác. Thông thường để giải quyết một bài toán, thí sinh phải viết một chương trình máy tính bằng bất cứ ngôn ngữ lập trình nào và nộp trước khi thời hạn năm giờ kết thúc. Sau đó, chương trình sẽ được chấm bằng cách cho chạy thử với các bộ dữ liệu (test data) được giữ bí mật, bao gồm nhiều test (thông thường 10 hoặc 20). Thí sinh được chấm điểm cho mỗi test mà chương trình chạy đúng, trong giới hạn bộ nhớ và thời gian cho phép. Có một số trường hợp, chương trình của thí sinh phải tương tác với một thư viện được giữ bí mật. Những bài toán loại này cho phép dữ liệu nhập vào không cần xác định trước, mà phụ thuộc vào sự tương tác của chương trình thí sinh, ví dụ trong các bài toán về trò chơi. Còn một loại bài toán khác trong đó thí sinh sẽ được phép biết các bộ dữ liệu vào (input) trong thời gian năm giờ thi. Với các bài toán loại này, thí sinh không cần nộp chương trình mà sẽ nộp các bộ kết quả (output) tương ứng. Thí sinh có thể tạo ra các file kết quả bằng bất kỳ cách nào, bằng cách viết chương trình, bằng tay, hoặc kết hợp cả hai phương pháp này.

Điểm của mỗi thí sinh là điểm tổng cộng của các bài toán trong hai ngày thi. Trong lễ trao giải, các thí sinh được trao huy chương tùy theo điểm tổng tương đối. 50% thí sinh dẫn đầu (tính trung bình hai thí sinh mỗi nước) sẽ được trao huy chương, sao cho tỉ lệ giữa vàng: bạc: đồng: không có huy chương xấp xỉ 1:2:3:6 (như vậy cứ khoảng 12 thí sinh sẽ có một huy chương vàng).